package com.catmiao.sql;


import org.apache.spark.rdd.RDD;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

public class Spark03_SQL {

    public static void main(String[] args) {

        // 构建SparkSQL的环境对象时，一般采用构建器模式
        // 构造器模式：构建对象
        SparkSession sparkSession = SparkSession
                .builder()
                .master("local[*]")
                .appName("SparkSQL")
                .getOrCreate();


        // TODO Spark SQL中对数据模型也进行封装：RDD -> Dataset
        //      对接文件数据源时，会将文件中的一行数据封装为 Row对象
        Dataset<Row> ds = sparkSession.read().json("datas/sql/user.json");

        // TODO 将数据模型转换为表，方便SQL的使用
        ds.createOrReplaceTempView("user");

        // 使用SQL文的方式操作数据
        String sql = "select avg(age) from user";
        Dataset<Row> sqlDs = sparkSession.sql(sql);

        // TODO 展示数据模型的效果
        sqlDs.show();


        sparkSession.close();
    }

}
